%{
#include <stdio.h>
#include <stdlib.h>
#include "myfile.tab.h"
extern YYSTYPE yylval;
%}

%%
[ \t]           ;  /* 忽略空白字符 */
[0-9]+          { yylval.num = atof(yytext); return NUMBER; }
"int"           { return INT; }
"float"         { return FLOAT; }
"if"            { return IF; }
"else"          { return ELSE; }
"while"         { return WHILE; }
[a-zA-Z][a-zA-Z0-9]* { yylval.str = strdup(yytext); return IDENTIFIER; }
"="             { return ASSIGN; }
"+"             { return '+'; }
"-"             { return '-'; }
"*"             { return '*'; }
"/"             { return '/'; }
"("             { return LPAREN; }
")"             { return RPAREN; }
"{"             { return LBRACE; }
"}"             { return RBRACE; }
";"             { return SEMICOLON; }
"<"             { return LT; }
">"             { return GT; }
"=="            { return EQ; }
"!="            { return NE; }
">="            { return GE; }
"<="            { return LE; }
\n              { return EOL; }
.               { printf("Unknown character\n"); }
%%

int yywrap(void) {
    return 1;
} 